home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung (Tewi)(1994).iso / magazine / dbms_mag / 9107 / embay_c / eb_edit.h < prev    next >
C/C++ Source or Header  |  1991-03-14  |  4KB  |  127 lines

  1. //== eb_edit.h ===  Class definitions for Emerald Bay data editing objects
  2. //                  Copyright 1991 Wes Peterson
  3.  
  4. #include <stdlib.h>
  5. #include <string.h>
  6. #include <conio.h>
  7. #include <eb.h>
  8. #include <ebbcd.h>
  9. #include <keydef.h>
  10. #include "llist.h"
  11.  
  12. #define UP    -1
  13. #define DOWN   1
  14.  
  15. int     GetKey(void);
  16. void    beep(void);
  17.  
  18. class    field;
  19. class   ded;
  20.  
  21.  
  22. //== table class === controls Emerald Bay data tables ===============
  23.  
  24. class table    {
  25.     friend         field;
  26.     LinkedList  fields;             // list of field objects
  27.     int         db;
  28.     char         *name;
  29.     int         id;
  30.     NDXARG         ndx_info;
  31. public:
  32.     table(int db_handle, char *table_name);
  33.     ~table(void) { free(name);}
  34.     void open(void);
  35.     void close(void) { DbCloseTable(id);}
  36.     int write(void);
  37.     int top(void);
  38.     int bottom(void);
  39.     int skip(int dir = 1);
  40.     void fetch(void);
  41.     void store(void);
  42. };
  43.  
  44.  
  45. // == field class === handles the fields in database records ========
  46.  
  47. class field : public ll_node {
  48.     friend     ded;
  49.     table    *tbl;
  50.     void    *data;
  51.     FLDARG    fldarg;
  52. public:
  53.     field(table& tbl, char *field_name);
  54.     ~field(void) { delete data;}
  55.     void fetch(void) { DbFetch(tbl->id, fldarg.fldid, (char *) data); }
  56.     void store(void) { DbStore(tbl->id, fldarg.fldid, (char *) data); }
  57. };
  58.  
  59.  
  60. // == text_item class === displays text on data entry screens =======
  61.  
  62. class text_item : ll_node {
  63.     int row, col;           // text display position
  64.     char *text;             // text that will be displayed
  65. public:
  66.     text_item(int r, int c, char *t)    {
  67.         row = r;
  68.         col = c;
  69.         text = strdup(t);
  70.         } ;
  71.     ~text_item(void)    { free(text); };
  72.     void display(void)  { gotoxy(col, row); fputs(text, stdout); };
  73.     void draw_field(int attr);
  74. };
  75.  
  76.  
  77. //== scr_form class === Screen data entry form ======================
  78.  
  79. class scr_form  {
  80.     table       *tbl;       // table object "registered" with this form
  81.     LinkedList  text;       // where we store text_item objects
  82.     LinkedList  fields;     //   "   "    "   ded (data-editor) objects
  83.     int         track_row;  // screen row to use for next ded or text_item
  84.     int         track_col;  // screen column
  85.     int         say_attr;   // color to use for text_item display
  86.     int         get_attr;   // color of fields (deds)
  87.     int         curr_get_attr;  // color of highlighted (current) field
  88. public:
  89.     scr_form(int say_color, int get_color, int curr_color);
  90.     void register_table(table *t) {tbl = t;}
  91.     void at(int row, int col) {track_row = row; track_col = col;};
  92.     void say(char *t);
  93.     void get(char *var, char *pct, char *msk, char *flg);
  94.     void get(long *var, char *pct, char *msk, char *flg);
  95.     void get(field& f);
  96.     void set_width(int w);
  97.     void display_says(void);
  98.     void display_gets(void);
  99.     void edit_gets(void);
  100.     void read(void);
  101. };
  102.  
  103.  
  104. // == ded class === a ded is a field (or variable) data-editor ======
  105.  
  106. class ded : public ll_node   {
  107.     int         row;
  108.     int         col;
  109.     int         fld_width;
  110.     EDITOBJECT  *ed;
  111.     int         dtype;
  112.     void        *data;
  113.     char        *picture;
  114.     char        *mask;
  115.     char        *flags;
  116. public:
  117.     ded(int r, int c, char *dta, char *pct, char *msk, char *flg);
  118.     ded(int r, int c, long *dta, char *pct, char *msk, char *flg);
  119.     ded(int r, int c, field *f,  char *pct, char *msk, char *flg);
  120.  
  121.     void    display(int attr);
  122.     void    draw_field(int attr);
  123.     int     edit(int g_attr, int cg_attr);
  124.     void    set_width(int w) {fld_width = w;};
  125. } ;
  126.  
  127.